# _*_ coding: UTF-8 _*_
# @Time     : 2021/1/19 上午 11:10
# @Author   : Li Jie
# @Site     : http://www.hzdledu.com/
# @File     : prac1.py
# @Software : PyCharm

# 1.获取字符串 '11:12:11> 001 enter chatroom, level2'中的用户id和等级
str1 = '11:12:11> 001 enter chatroom, level2'
id = str1[10:10 + 3]
level = str1[30:30 + 6]
print(f'id:{id},level:{level}')

print('----------------------------------------------------------')
# 2.获取下面字符串中的所有用户id和等级
# '''11:12:11> 001 enter chatroom, level2
# 11:12:11> 22 enter chatroom, level3
# 11:12:11> 0004 enter chatroom, level105
# 11:12:11> 003 enter chatroom, level99'''
str1 = '''11:12:11> 001 enter chatroom, level2
11:12:11> 22 enter chatroom, level3
11:12:11> 0004 enter chatroom, level105
11:12:11> 003 enter chatroom, level99'''
list1 = str1.split('\n')
list2 = []
for i in list1:
    i = i.split()
    list2.append([i[1], i[4]])
print(list2)

print('----------------------------------------------------------')
# 3.将字符串'abcd[0910efg&*(]hijkl[ada2r4545]mn03opq$st'中的非字母字符去掉
import re

str1 = 'abcd[0910efg&*(]hijkl[ada2r4545]mn03opq$st'

# 使用正则sub替换
pattern = r'[^a-zA-Z]'
str2 = re.sub(pattern, '', str1)
print(str2)

# 使用字符串的序列特点
str2 = ''
for i in str1:
    if i.isalpha():
        str2 += i
print(str2)

print('----------------------------------------------------------')
# 4.使用正则表达式在下面字符串中过滤出ip地址：
# '127.0.0.1 192.168.1.66  172.16.10.110'

str1 = '127.0.0.1 192.168.1.66  172.16.10.110'
# pattern = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'  # 包含两个分组
pattern = r'[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
list1 = re.findall(pattern, str1)
print(list1)

print('----------------------------------------------------------')
# 5.编写一个程序，要求用户输入一个字符串，将字符串中重复的字符串去除，如输入'abcaadef'，输出为'abcdef'
str1 = 'abcaadef'
str2 = ''
for i in str1:
    if i not in str2:
        str2 += i
print(str2)

print('----------------------------------------------------------')
# 6.编写一个程序，要求用户输入一个身份证号码，输出生日、性别。如输入'22010520050213xxxx'，输出'2005年2月13日男'
# 15位身份证号码：第7、8位为出生年份(两位数)，第9、10位为出生月份，第11、12位代表出生日期，第15位代表性别，奇数为男，偶数为女。　
# 18位身份证号码：第7、8、9、10位为出生年份(四位数)，第11、第12位为出生月份，第13、14位代表出生日期，第17位代表性别，奇数为男，偶数为女。
id = input('请输入身份证号码：')
pattern = r'(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$'
if re.match(pattern, id):
    if len(id) == 15:
        year = id[6:6 + 2]
        month = id[8:8 + 2]
        date = id[10:10 + 2]
        if int(id[14]) % 2 == 1:
            sexual = '男'
        else:
            sexual = '女'
    elif len(id) == 18:
        year = id[6:6 + 4]
        month = id[10:10 + 2]
        date = id[12:12 + 2]
        if int(id[16]) % 2 == 1:
            sexual = '男'
        else:
            sexual = '女'
    else:
        pass
    print(f'{year}年{month}月{date}日出生，性别:{sexual}')
else:
    print('身份证号码不合法！')

